Typically, development of software (e.g., an information technology (IT) application, an enterprise application, a Web-based application, etc.) can take a prolonged amount of time (e.g., months) and may involve multiple environments (e.g., a development environment, a test environment, a production environment, etc.) with multiple developmental teams coordinating together. For example, an IT application may be very large and comprise various components, which are inter-dependent amongst each other and are built by different developmental teams.
In addition to these complexities, decisions to change the software can occur during any stage of development, resulting in developers having to make the change to the software and also to get the change deployed. For example, developers may check-in their changes of an application. Thereafter, the developer and/or a support team will build the entire application and deploy the application in a given environment. However, when there is a compilation error due to a bug introduced by the change, the entire process has to be halted. Since a deployment team usually has a specific time window within which they have to deploy the application changes, when the bug occurs, the deployment team has to wait until the next deployment time window to occur before further deployment measures can be taken.
Other types of issues can arise during the development of software. For example, if a version of the software deployed needs to be rolled back to a previous version, the rollback process can be tedious, cumbersome, and result in an inordinate amount of downtime. Additionally, the software may also have to be distributed to multiple environments and deployed on application servers, which requires use of the resources of the application servers. As a result, typical deployment procedures may require that special user accounts having administrative privileges be set up to enable users to deploy the software on the application servers and/or within the multiple environments. Such deployment procedures, while perhaps necessary, can be time intensive, limiting in terms of available personnel to perform a deployment, etc.